<?php

class ShopCart {
	private $CartItems = array();
	private $Controller;
	
	function __construct($Controller){
		$this->Controller = $Controller;
	}
	
	function addCartItem($ItemID){		
		$NewCartItem = new ShopItem($ItemID, $this->Controller);
		
		if($NewCartItem->getAvalibility() != true){
			return false;
		}
		
		if(isset($this->CartItems[$ItemID])){
			$this->changeCartItemQuantity($ItemID, $this->CartItems[$ItemID]["quantity"] + 1);
			
			return true;
		}
		
		$this->CartItems[$ItemID]["item"] = $NewCartItem;
		$this->CartItems[$ItemID]["quantity"] = 1;
		
		$this->saveCartToSession();
		
		return true;
	}
	
	function removeCartItem($ItemID){
		if(isset($this->CartItems[$ItemID])){
			unset($this->CartItems[$ItemID]);
		}
		
		$this->saveCartToSession();
		
		return true;
	}
	
	function clearCart(){
		$this->CartItems = array();
		$this->saveCartToSession();
		
		return true;
	}
	
	function changeCartItemQuantity($ItemID, $Quantity){
		if($Quantity <= 0){
			$this->removeCartItem($ItemID);
			return true;
		}
		
		if(isset($this->CartItems[$ItemID])){
			$this->CartItems[$ItemID]["quantity"] = $Quantity;
		}
		
		$this->saveCartToSession();
		
		return true;
	}
	
	function getCartItems(){
		if(count($this->CartItems) <= 0){
			return false;
		}
		
		return $this->CartItems;
	}
	
	function saveCartToSession(){
		$_SESSION["fms_shop_cart"] = serialize($this);
	}
	
	function getItemTotalAmount($ItemID){
		if(!isset($this->CartItems[$ItemID])){
			return false;	
		}
		
		$Total = $this->CartItems[$ItemID]["quantity"] * $this->CartItems[$ItemID]["item"]->getDiscountPrice();
		
		return $Total;
	}
	
	function getTotalAmount(){
		if(count($this->CartItems) <= 0){
			return false;
		}
		
		$Total = 0;
		
		foreach ($this->CartItems as $CItem){
			$Quantity = $CItem["quantity"];
			$PriceForOne = $CItem["item"]->getDiscountPrice();
			
			$Total += $Quantity * $PriceForOne;
		}
		
		return $Total;
	}
}

?>